package com.uls.questionnaire.domain;

import java.util.List;
import java.util.Date;
import java.util.Objects;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.uls.questionnaire.vo.TaskCommentVo;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.uls.common.annotation.Excel;
import com.uls.common.core.domain.BaseEntity;
import org.joda.time.DateTime;

/**
 * 问卷信息对象 zxh_questionnaire
 * 
 * @author zxh
 * @date 2024-10-31
 */
public class ZxhQuestionnaire extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 问卷id */
    @Excel(name = "问卷id")
    private Long questionnaireId;

    /** 问卷的标题 */
    @Excel(name = "问卷的标题")
    private String title;

    /** 问卷的描述 */
    @Excel(name = "问卷的描述")
    private String description;

    /** 发布状态(0:未发布，1:发布) */
    @Excel(name = "发布状态(0:未发布，1:发布)")
    private Long publishStatus;

    /** 更新时间 */
    private Date updatedTime;


    private Date createdTime;
    /** 问卷版本号 */
    private Long version;

    /** 问题信息信息 */
    private List<ZxhQuestion> zxhQuestionList;

    @Excel(name = "图片")
    private String picture;

    private Long flowInstantId;
    private Integer status;

    private Integer agree;

    private String comment;

    private List<TaskCommentVo> taskCommentVoList;

    public List<TaskCommentVo> getTaskCommentVoList() {
        return taskCommentVoList;
    }

    public void setTaskCommentVoList(List<TaskCommentVo> taskCommentVoList) {
        this.taskCommentVoList = taskCommentVoList;
    }

    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = comment;
    }

    public Integer getAgree() {
        return agree;
    }

    public void setAgree(Integer agree) {
        this.agree = agree;
    }

    public Long getFlowInstantId() {
        return flowInstantId;
    }

    public void setFlowInstantId(Long flowInstantId) {
        this.flowInstantId = flowInstantId;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public String getPicture() {
        return picture;
    }

    public void setPicture(String picture) {
        this.picture = picture;
    }

    public void setQuestionnaireId(Long questionnaireId)
    {
        this.questionnaireId = questionnaireId;
    }

    public Long getQuestionnaireId() 
    {
        return questionnaireId;
    }
    public void setTitle(String title) 
    {
        this.title = title;
    }

    public String getTitle() 
    {
        return title;
    }
    public void setDescription(String description) 
    {
        this.description = description;
    }

    public String getDescription() 
    {
        return description;
    }
    public void setPublishStatus(Long publishStatus) 
    {
        this.publishStatus = publishStatus;
    }

    public Long getPublishStatus() 
    {
        return publishStatus;
    }

    public void setVersion(Long version) 
    {
        this.version = version;
    }

    public Long getVersion() 
    {
        return version;
    }

    public List<ZxhQuestion> getZxhQuestionList()
    {
        return zxhQuestionList;
    }

    public void setZxhQuestionList(List<ZxhQuestion> zxhQuestionList)
    {
        this.zxhQuestionList = zxhQuestionList;
    }

    public Date getUpdatedTime() {
        return updatedTime;
    }

    public void setUpdatedTime(Date updatedTime) {
        this.updatedTime = updatedTime;
    }

    public Date getCreatedTime() {
        return createdTime;
    }

    public void setCreatedTime(Date createdTime) {
        this.createdTime = createdTime;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("questionnaireId", getQuestionnaireId())
            .append("title", getTitle())
            .append("description", getDescription())
            .append("createTime", getCreateTime())
            .append("publishStatus", getPublishStatus())
            .append("updatedTime", getUpdatedTime())
            .append("createBy", getCreateBy())
            .append("version", getVersion())
            .append("zxhQuestionList", getZxhQuestionList())
            .toString();
    }

    @Override
    public boolean equals(Object o) {
        if(this==o) return true;
        if(o==null||getClass()!=o.getClass()) return false;
        ZxhQuestionnaire questionnaire=(ZxhQuestionnaire) o;
        return Objects.equals(questionnaireId,questionnaire.questionnaireId)&&
                Objects.equals(title,questionnaire.title)&&
                Objects.equals(description,questionnaire.description)&&
                Objects.equals(publishStatus,questionnaire.publishStatus)&&
//                Objects.equals(studentSex,student.studentSex)&&
//                Objects.equals(studentStatus,student.studentStatus)&&
//                Objects.equals(studentBirthday,student.studentBirthday)&&
//                Objects.equals(flowInstantId,student.flowInstantId)&&
                Objects.equals(status,questionnaire.status)&&
                Objects.equals(agree,questionnaire.agree)&&
                Objects.equals(comment,questionnaire.comment)&&
                Objects.equals(taskCommentVoList,questionnaire.taskCommentVoList);
    }

    @Override
    public int hashCode() {
        return Objects.hash(questionnaireId,title,description,updatedTime,publishStatus,status,agree,comment,taskCommentVoList,version);
    }
}
